A dot-product engine (DPE) may be implemented on an integrated circuit (IC) as a crossbar array that includes memory elements at each crossbar intersection. Memory elements may include a memristor and a transistor in series to store an input voltage and/or current value. A crossbar with N rows, M columns may have N×M memory elements that may be used to calculate the dot-product (matrix multiplication) of two matrices of up to an N×M size. The IC may provide a vector input for N voltage inputs to the crossbar array and a vector output for M voltage outputs from the crossbar array. The IC may further include an analog-to-digital converter (ADC) and/or a digital-to-analog converter (DAC) coupled to each input/output register. Values representative of a first matrix may be stored in the crossbar array as a programmable resistance value. Voltages/currents representative of a second matrix may be applied to the crossbar. Ohm's Law and Kirchoff's Law may be used in calculations to determine values representative of the dot-product as read from outputs of the crossbar. In this manner, a DPE allows for in situ calculation of the dot-product of two matrices. The DPE engine represents an analog computation device. A memristor crossbar array structure can carry out vector-matrix multiplication. By applying a vector of voltage signals to the rows of a memristor crossbar array, multiplication by each element's programmed conductance is carried out. The memristor crossbar array structure may be further configured to accelerate performance of vector data set calculations over traditional digital ASIC processing.
In digital computation devices, error-correcting code memory (ECC memory) is a type of computer data storage that can detect and correct the most common kinds of internal data corruption associated with digital data. ECC memory is used in most computers where digital data corruption results in potentially serious consequences, such as for scientific or financial computing. ECC memory may be more expensive than non-ECC memory and may require more overhead, e.g., more computational cycles or power requirements, etc. Conventional ECC memory and ECC techniques for digital computation are simply not applicable to analog computational models, however analog computational modules may also benefit from a similar application of ECC methodology, but wholly different implementation, to address any corruption that may be present in the analog domain (e.g., noise induced corruption).